for await...of で Generator の return value を使いたい
for await...of はどうやら Generator の return value を握り潰すらしい
code:typescript
const g = function* g() {
yield 1
return 999
}
const iter = g()
for(const item of iter) {
console.log(item) // 1 しか出ない
}
console.log(iter.next()) // {value: undefined, done: true} になる
こまる!
return で完了した理由を返したい事もあるので
/tosuke/tosuke.icon が助けてくれました!!!!!!
code:useReturn.ts
let result: TReturn | undefined
return [
(function* () {
result = yield* gen
})(),
() => result,
]
}
yield* の結果を result に入れておいて、後から取れるようにする
code:typescript
const g = function* g() {
yield 1
return 999
}
for(const item of iter) {
console.log(item) // 1
}
console.log(result()) // 999
便利!